package controller;

import dao.UserDAO;
import dao.impl.UserDAOImpl;
import model.User;
import model.common.Msg;
import org.apache.commons.codec.digest.DigestUtils;
import service.UserService;
import service.impl.UserServiceImpl;
import utils.JSONUtil;

import java.util.List;

/**
 * @Description: TODO
 * @author: april
 * @date: 2021年12月06日 1:09
 */
public class UserController extends BaseController {


    UserService userService = new UserServiceImpl();

    UserDAO userDAO = new UserDAOImpl();


    public String login(String username, String password) {
        User user = null;

        try {
            user = userService.login(username, DigestUtils.sha512Hex(password));
        } catch (Exception e) {
            log.error(e.getMessage());
        }
        //将login方法的返回值封装到Msg类中
        Msg msg = new Msg();
        if (user != null) {

            //把当前登录用户对象放到上下文对象中
            context.put(LOGIN_USER, user);
            msg.setType(Msg.SUCCESS);
            msg.setMsg("登录成功");

            log.info(user.getUsername() + "，登陆成功");

        } else {
            msg.setType(Msg.FAIL);
            msg.setMsg("用户名或密码错误");
        }

        return JSONUtil.entity2JSON(msg);
    }

    public User getLoginUser() {
        Object obj = context.get(LOGIN_USER);

        if (obj != null) {
            return (User) obj;
        }
        return null;
    }

    public String getUserList() {
        Msg msg = new Msg();
        //异常处理
        try {
            //1获取所有用户的对象列表
            List<User> userList = userService.getUserList();
            //2.将商品对象列表转换成字符串并返回
            msg.setObj(userList);
            msg.setType(Msg.SUCCESS);

            String result = JSONUtil.entity2JSON(msg);
            //记录日志
            log.info("获取用户列表");
            //响应消息到客户端
            return result;
        } catch (Exception e) {
            msg.setType(Msg.FAIL);
            msg.setMsg("获取用户列表失败，服务器异常");
            //4.记录日志
            log.error("获取用户列表失败：" + e.getMessage());
        }
        return JSONUtil.entity2JSON(msg);
    }

    public String createUser(User user) {

        Msg msg = new Msg();
        user.setPassword(DigestUtils.sha512Hex(user.getPassword()));
        if (userService.addUser(user) > 0) {
            msg.setType(Msg.SUCCESS);
            msg.setMsg("添加用户成功");
            return JSONUtil.entity2JSON(msg);
        }
        msg.setMsg(Msg.FAIL);
        msg.setMsg("添加用户失败");
        return JSONUtil.entity2JSON(msg);
    }

    public String updateUser(User user) {
        Msg msg = new Msg();
        user.setPassword(DigestUtils.sha512Hex(user.getPassword()));
        if (userService.updateUser(user) > 0) {
            msg.setType(Msg.SUCCESS);
            msg.setMsg("修改用户成功");
            return JSONUtil.entity2JSON(msg);
        }
        msg.setMsg(Msg.FAIL);
        msg.setMsg("修改用户失败");
        return JSONUtil.entity2JSON(msg);
    }

    public void deleteUser(String id) {

        userDAO.deleteUser(id);
        log.info(id + "被删除");
    }



}
